/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import java.util.ArrayList;
import model.dao.DaoAluno;
import model.dao.DaoDisciplina;
import model.dao.DaoProfessor;
import model.dao.DaoTurma;

import model.dominio.Aluno;
import model.dominio.Atividade;
import model.dominio.Disciplina;
import model.dominio.Falta;
import model.dominio.Professor;
import model.dominio.Turma;

import utilitarios.Console;

/**
 *
 * @author ronan
 */
public class ViewTurma {
    
    public static int MenuTurma() {
        int a;
        
        System.out.println("===========Turma===========");
        System.out.println("1- Cadastrar turma");
        System.out.println("2- Buscar turma");
        System.out.println("0- Voltar ao menú principal");
        
        a= Console.readInteger();
        switch (a) {
            case 1:
                cadastrar();
                MenuTurma();
                break;
            case 2:
                pesquisar();
                MenuTurma();
                break;
            case 0:
                ViewMenuPrincipal.Menu();
                break;
        }
        return 0;
    }
     
    public static void cadastrar() {
        Turma turma1;
        String local;
        int ano, periodo, horario, numeroVagas;
        
        //Instanciação
        DaoProfessor dao2 = new DaoProfessor();
        DaoDisciplina dao1 = new DaoDisciplina();
        DaoAluno dao0 = new DaoAluno();
        
        System.out.println("---------Cadastrar Turma--------");
        System.out.println("Digite as informações da Turma");
        
        System.out.print("Local: ");
        local = Console.readString();
          
        System.out.print("Ano: ");
        ano = Console.readInteger();
        
        System.out.print("Periodo: ");
        periodo = Console.readInteger();
        
        System.out.print("Horario: ");
        horario = Console.readInteger();
        
        System.out.print("Vagas: ");
        numeroVagas = Console.readInteger();
        
        System.out.println("Professor: ");
        ArrayList<Professor> professores = dao2.obterLista();
        Professor professor;
        for (int i = 0; i < professores.size(); i++) {
            professor = professores.get(i);
            System.out.println(professor.getCodigoProfessor() + " - " + professor.getNome());
        }
        professor = new Professor();
        professor.setCodigoProfessor(Console.readInteger());
        
        System.out.println("Disciplina: ");
        ArrayList<Disciplina> disciplinas = dao1.obterLista();
        Disciplina disciplina;
        for (int i = 0; i < disciplinas.size(); i++) {
            disciplina = disciplinas.get(i);
            System.out.println(disciplina.getCodigoDisciplina() + " - " + disciplina.getNome());
        }
        disciplina = new Disciplina();
        disciplina.setCodigoDisciplina(Console.readInteger());
        
        System.out.println("Alunos: ");       
        ArrayList<Aluno> alunos = dao0.obterLista();
        Aluno aluno;
        for (int i = 0; i < alunos.size(); i++) {
            aluno = alunos.get(i);
            System.out.println(aluno.getCodigoAluno() + " - " + aluno.getNome());
        }
        
        System.out.println("Digite 0 para terminar de adicionar");
        int codigoAluno = 0;
        alunos=new ArrayList();
        do {
            codigoAluno = Console.readInteger();
            if (codigoAluno != 0) {
                aluno = new Aluno();
                aluno.setCodigoAluno(codigoAluno);
                alunos.add(aluno);
            }
        } while (codigoAluno != 0);

        turma1 = new Turma(ano, periodo, horario, local, numeroVagas);
        turma1.setDisciplina(disciplina);
        turma1.setAlunos(alunos);
        DaoTurma dao3 = new DaoTurma();
        dao3.cadastrar(turma1);
    }

    public static void pesquisar() {
        
        int a, ano, periodo;
        float notaFinal = 0;
        
        Turma turma = new Turma();
        Disciplina disciplina = new Disciplina();
        Falta falta;
        Aluno aluno;
        
        ArrayList<Falta> faltas = new Turma().getFaltas();
        ArrayList<Atividade> atividades = new Turma().getAtividades();
        ArrayList<Turma> turmas = new DaoTurma().obterLista();
        ArrayList<Disciplina> disciplinas = new DaoDisciplina().obterLista();
        
        System.out.println("Disciplinas:");
        for (int i = 0; i < disciplinas.size(); i++) {
            System.out.println((i + 1) + " - " + disciplinas.get(i).getNome());
        }
        System.out.print("\nSelecione uma: ");
        try {
            disciplina = disciplinas.get(Console.readInteger() - 1);
        } catch (Exception e) {
            System.out.println("Codigo Inválido, tente novamente.");
            pesquisar();
        }
        
        System.out.print("Ano: ");
        ano = Console.readInteger();
        System.out.print("Periodo: ");
        periodo = Console.readInteger();
        
        for (Turma turma1 : turmas) {
            if (turma1.getDisciplina().getCodigoDisciplina() == disciplina.getCodigoDisciplina() 
                    && turma1.getAno() == ano 
                    && turma1.getPeriodo() == periodo) {
                break;
            }
        }
        
        if (turma == null) {
            System.out.println("Nenhuma turma foi encontrada");
            } else {
               System.out.println("CPF \t Aluno \t Faltas \t Nota Final (%) \t Situação");
               for (int i = 0; i < faltas.size(); i++) {
                falta = faltas.get(i);
                aluno = falta.getAluno();
                System.out.print(aluno.getCpf() + "\t" + aluno.getNome() + "\t");
                
                System.out.print(falta.getFalta() + "\t");
                
                notaFinal = turma.getNotaFinal(aluno.getCodigoAluno());
                notaFinal = ((notaFinal / turma.getValorTotalNotas()) * 100);
                System.out.print(notaFinal + "\t");
                
                int vFaltas=falta.getFalta();
                int vCarga = turma.getDisciplina().getCh();
                double porcentFalta =(double) vFaltas/vCarga;
         
                if (porcentFalta <= 0.25 && notaFinal >= 60) {
                    System.out.println("Aprovado");
                } else {
                    System.out.println("Reprovado");
                }

            }
        }
        
                    
            
            
         /* Disciplina disciplina = null;
         * Aluno aluno2 = new Aluno();
         * 
         * System.out.println("Escolha a disciplina:");
         * System.out.println("Disciplina \t Ano \t Periodo");
         * ArrayList<Disciplina> disciplinas = new DaoDisciplina().obterLista();
         * for (int i = 0; i < disciplinas.size(); i++) {
         * System.out.println((i + 1) + " - "
         * + disciplinas.get(i).getNome() + "\t"
         * + disciplinas.get(i).getNome() + "\t"
         * + disciplinas.get(i).getNome());
         * }
         * disciplina = disciplinas.get(Console.readInteger() - 1);*/
         
         
         
         /* System.out.println("Disciplina: ");
         * disciplina = Console.readString();
         * System.out.println("Ano: ");
         * ano = Console.readInteger();
         * System.out.println("Periodo: ");
         * periodo = Console.readInteger();
         * 
         * a= Console.readInteger();
         * switch (a) {
         * case 1:
         * System.out.print("Nome: ");
         * nome = Console.readString();
         * pesquisarItem(aluno2, nome);
         * MenuTurma();
         * break;
         * 
         * case 2:
         * System.out.print("CPF: ");
         * CPF = Console.readString();
         * pesquisarItem(aluno2, CPF);
         * MenuTurma();
         * break;
         * 
         * default:
         * System.out.println("Opção inválida");
         * MenuTurma();
         * }*/
        
        
        /*System.out.println("Disciplina: ");
         * disciplina = Console.readString();
         * System.out.println("Ano: ");
         * ano = Console.readInteger();
         * System.out.println("Periodo: ");
         * periodo = Console.readInteger();*/ 
     }

       
  
   /*public static Turma consultar(){
     Disciplina turma2;
     String disciplina;
     int ano, periodo;
     System.out.println("Informe disciplina");
     disciplina = Console.readString();
     System.out.println("Informe o ano");
     ano= Console.readInteger();
     System.out.println("Informe o periodo");
     periodo = Console.readInteger();
     return turma2;
          
     }*/
    
    /*public static void consultar () {
        String disciplina;
        int ano, periodo;
        System.out.println("Informe a dsiciplina");
        disciplina = Console.readString();
        DaoTurma arq = new DaoTurma();
        while ()
        if ( arq.listar());
        
            
            
            
        
        
    }*/
}
